// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'

// 注册vuex
import Vuex from 'vuex'
Vue.use(Vuex)


import { Switch } from 'mint-ui';
Vue.component(Switch.name, Switch);

var store = new Vuex.Store({
  store:{  //this.$store.state.***
    car:[]   //将 购物车中的商品的数据，用一个数组存储起来，在car数组中，存储一些商品的对像，咱们可以暂将这个商品对象，设计成这个样子
              // {id:商品的id，count：要购买的数量，price:商品的单价，selected:false}
  },
  mutations:{  //this.$store.commit("方法名称"，"按需传递唯一的参数")
      addToCar(state,goodsinfo){
        //点击加入购物车，把商品信息，保存到state中的car
        //分析:
        //1.如果购物车中，之前就已经有这个对应的商品了，那么，只需要更新数量
        //2.如果没有，则直接把  商品数据，push到car中即可
        var flag = false
        state.car.some(item=>{
          if(item.id == goodsinfo.id){
            item.count += parseInt(goodsinfo.count)
            flag = true
            return true
          }
        })

        //如果最终，循环完毕，得到flag还是false，则把商品数量直接push到购物车中
        if(!flag){
          state.car.push(goodsinfo)
        }

        //当更新car之后，把car数组，存储到本地的localStorage中
        localStorage.setItem('car',JSON.stringify(state.car))
      }
  },
  getters:{  //this.$store.getters.***
        
  }
})


// 按需导入Mint-UI中的组件
import {Header,Swipe, SwipeItem,Button } from 'mint-ui'
import 'mint-ui/lib/style.css'
import './lib/mui/css/mui.min.css'
import './lib/mui/css/icons-extra.css'
import VueResource from 'vue-resource'


Vue.use(VueResource)
//全局配置请求的根路径
Vue.http.options.root = 'http://vue.studyit.io';
//全局设置post时候表单数据格式组织形式  application/x-www-form-urlencoded
Vue.http.options.emulateJSON = true;

//导入格式化时间的插件
import moment from 'moment'
//定义全局的过滤器
Vue.filter('dataFormat',function(dataStr,pattern = "YYYY-MM-DD HH:mm:ss"){
  return moment(dataStr).format(pattern)
})
Vue.component(Swipe.name, Swipe);
Vue.component(SwipeItem.name, SwipeItem);
Vue.component(Header.name,Header)
Vue.component(Button.name,Button)

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>',
  store                 //挂载store状态管理对象
})
